// JavaScript Document

/***** VARIABELEN *****/
var xmlDoc = laadXML("xml/films.xml");
var api_key = "a4e7dc6d49bc0282e7f0133ad697c8b5";
var base_url = getCookie('base_url');
var zaterdag_ingeladen = false;
var zondag_ingeladen = false;
var connect_error = "Can't connect to movie database...";
var invoer = "";

/***** ALGEMENE FUNCTIES, GEBRUIKT DOOR MEERDERE PAGINA'S *****/

function gaNaarNav()
{
	$("#mobiele_navigatie").slideToggle(200,0,function() {
		if($("#mobiele_navigatie").is(":visible"))
		{
			$(document.body).animate(
			{
				'scrollTop' : $("#mobiele_navigatie").offset().top
			});
			
			 //fallback voor als de animatie functie het niet doet 
			location.hash = "#mobiele_navigatie";
		}				
	});
	//document.getElementById("home_mobiel").scrollIntoView(1);
	console.log($("#mobiele_navigatie").is(":visible"));

}

function laadXML(XMLfile)
{
	/** doet wat het zegt; opent XML file en stuurt de inhoud terug, 
		gebruikt om variabele XMLDoc te initialiseren **/
	if (window.XMLHttpRequest)
	{/* IE, Firefox, Chrome, Opera, Safari */
		xmlhttp=new XMLHttpRequest();
	}
	else {/* IE oud */
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}

	xmlhttp.open("GET",XMLfile,false);
	xmlhttp.send();
	xmlDoc=xmlhttp.responseXML; 

	return xmlDoc;
}

function taalTest()
{
	//document.writeln("I wish you could remind me who I was, because everyday I'm a little further off.");
	//var table = document.getElementById("ding"); 
	var cells = document.getElementsByTagName("a"); 
	for (var i = 0; i < cells.length; i++) { 
		alert(cells[i].nodeName);
		alert(cells[i].innerHTML);
	}
}

function getCookie(cookieNaam) {
	/** Vraagt waarde van cookie met naam cookieNaam op **/
    var naam = cookieNaam + "=";
    var stukje = document.cookie.split(';');
	
	console.log(stukje);
	
    for(var i = 0; i < stukje.length; i++) {
        var c = stukje[i];
        while (c.charAt(0) == ' ') { c = c.substring(1) };
        if (c.indexOf(naam) != -1) { return c.substring(naam.length,c.length) };
    }
	
    return "";	//als cookie niet gevonden is, lege waarde terugsturen
} 

function setCookie(cookieNaam, cookieWaarde, exDagen) {
	if (typeof exDagen === 'undefined') { exDagen = 0; }	//als er geen geldigheidsduur voor de cookie is meegegeven
    var txt = cookieNaam + "=" + cookieWaarde + ";";
	if(exDagen != 0)	//indien wel een geldigheidsduur, de 'vervaldatum' van de cookie berekenen en mee wegschrijven
	{
		var d = new Date();
	    d.setTime(d.getTime() + (exDagen*24*60*60*1000));
    	txt += " expires="+d.toGMTString()+";";
	}
	txt += " path=/";
	console.log(txt);
    document.cookie = txt;
}

function setBaseURL()
{
	/** Configuratie van TMDb opvragen om de url naar hun images op te vragen en opslaan in cookie

		Volgens hun documentatie:
	Some elements of the API require some knowledge of this configuration data. 
	The purpose of this is to try and keep the actual API responses as light as possible. 
	It is recommended you cache this data within your application and check for updates every few days.
	This method currently holds the data relevant to building image URLs as well as the change key map.
	To build an image URL, you will need 3 pieces of data. 
	The base_url, size and file_path. 
	Simply combine them all and you will have a fully qualified URL.
	
		Ik cache dus de base_url van de configuratiedata in een cookie met een vervaldatum over 3 dagen.
		Film images worden gebruikt op pagina's overzicht en film_detail.
	*/
	$.getJSON("http://api.themoviedb.org/3/configuration?api_key=" + api_key).done(function(json) {
		base_url = json.images.base_url;
		setCookie("base_url", base_url, 3);
	});
}

String.prototype.maakHoofdletter = function() {
	/** Maakt de eerste letter van de string hoofdletter.
		Dit wordt gebruikt op de film_detail pagina, 
		omdat in de XML de dagen in kleine letters staat, 
		maar op de pagina zelf moet dat uiteraard met een hoofdletter.
		 
		Ik voeg dit toe aan de prototypes van String, 
		zodat je dit alleen vanuit Strings kunt oproepen 
		en er dus geen problemen kunnen optreden met foute datatypes. **/
    return this.charAt(0).toUpperCase() + this.slice(1);
}

function toggle(element)
{
	/** Om website elementen in- en uit te klappen **/

	var tmp = "toggle" + element;
	var status = document.getElementById(tmp).innerHTML;

	if(status == "Show")
	{
		/* zaterdag en zondag op de overzichtspagina zijn standaard ingeklapt
		pas als ze worden uitgeklapt, hun filmdata inladen.
		Dit omdat we maar 30 requests per 10 seconden mogen doen aan de API van themoviedb.
		Stel dat alle films meteen worden ingeladen, zouden dat 27 requests zijn. 
		Op zich geen probleem, maar als de gebruiker dan binnen de 10 seconden naar categorie of film_detail gaat, 
		komen er extra requests en wordt de limiet van 30 overschreven. */
		
		if(element == "zaterdag" && zaterdag_ingeladen == false)
		{
			laadFilms("saturday");
			zaterdag_ingeladen = true;
		}
		
		if(element == "zondag" && zondag_ingeladen == false)
		{
			laadFilms("sunday");
			zondag_ingeladen = true;
		}
		
		document.getElementById(tmp).innerHTML = "Hide";
	} else if(status == "Hide")
	{
		document.getElementById(tmp).innerHTML = "Show";
	}
	
	tmp = "#" + element;
	$(tmp).slideToggle(); /* JQuery "slide" effect */
}

$(document).keydown(function(evt)
{
	 var charCode = (evt.charCode) ? evt.charCode :((evt.keyCode) ? evt.keyCode : 0);
	 /* cascade van if's om code van ingedrukte toets terug te krijgen. 
	 Als charCode is gedefiniëerd (= er is een letter of cijfer ingedrukt), die gebruiken. 
	 Als charCode 0 is, keyCode checken (= er is een "speciale" toets indedrukt, zoals de pijltjes of een F-toets)
	 Als ook keyCode 0 is, geeft het resultaat 0 (normaal gezien onmogelijk gezien deze subroutine alleen wordt aangeroepen als er een toets wordt ingedrukt)
	 */
	 
	 var volgorde = "38384040373937396665"; //up, up, down, down, left, right, left, right, b, a
	 
	 invoer += charCode;
	 
	 if(invoer.length > volgorde.length)
	 {
		 invoer = invoer.substr((invoer.length - volgorde.length));
	 }
	 
	 if(invoer == volgorde)
	 {
		 console.log("KONAMI CODE");
		 konami();
	 }
	 
	 console.log(invoer);
})